#ifndef _BINART_TREE_H_
#define _BINART_TREE_H_
#include <iostream>
#include <cstdlib>
using namespace std;

struct BinaryTreeNode
{
    int m_nValue;
    BinaryTreeNode * m_pLeft;
    BinaryTreeNode * m_pRight;
};

BinaryTreeNode * CreateBinaryTreeNode(int value);
BinaryTreeNode * Construct(int *, int *, int);
void ConnectTreeNodes(BinaryTreeNode * pParent, BinaryTreeNode * pLeft, BinaryTreeNode * pRight);
void PrintTreeNode(BinaryTreeNode * pNode);
void PrintTree(BinaryTreeNode * pRoot);
void MirrorBinaryTree_Recursively(BinaryTreeNode * pBinaryTreeRoot);
bool HasSubTree(BinaryTreeNode * pRoot1, BinaryTreeNode * pRoot2); 
void DestroyTree(BinaryTreeNode * pRoot);
#endif
